///////////////////////////////
// Analizador Léxico
///////////////////////////////


lexer grammar AnalizadorLexer;

options {
  language = Java;
}

@header {
  package practpl.doce;
}

@members {
     
     private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
     public ArrayList<RecognitionException> getErrors() {
        return errors;
     }
     @Override
     public void reportError (RecognitionException e) {
        String msg = getErrorMessage(e, getTokenNames());
        System.err.println(msg);
        errors.add(e);
     }
 
}

BLANCO : (' '|'\t'|'\r\n') {skip();};

fragment LETRA : ('a'..'z')| ('A'..'Z');
IDENT: (LETRA)+;
TEXTO: '\"' (.)* '\"';

fragment DIGITO : '0'..'9';

ENTERO : DIGITO+;
REAL: ENTERO PUNTO ENTERO;

MAS: '+';
MENOS: '-';
MULT: '*';
DIV: '/';
IGUAL: '=';
MENORIGUAL: '<=';
MAYORIGUAL: '>=';
COMPARA: '==';
DISTINTO: '!=';
MENOR: '<';
MAYOR: '>';

PARENTA: '(';
PARENTC: ')';
LLAVEA: '{';
LLAVEC: '}';
CORCHETEA: '[';
CORCHETEC: ']';
SEPARADOR : ';' ;
COMA: ',';
PUNTO: '.';
ASIGNA : ':=';


COMENTARIO: ('/*' ( options {greedy=false;} : . )* '*/') {skip();};
